﻿#region License
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Classless.Hasher - C#/.NET Hash and Checksum Algorithm Library.
 *
 * The Initial Developer of the Original Code is Classless.net.
 * Portions created by the Initial Developer are Copyright (C) 2009 the Initial
 * Developer. All Rights Reserved.
 *
 * Contributor(s):
 *		Jason Simeone (jay@classless.net)
 * 
 * ***** END LICENSE BLOCK ***** */
#endregion

using System;
using Classless.Hasher;
using Classless.Hasher.Utilities;

namespace Classless.Hasher.Tests {
	class TestVectorsHash : TestVectors {
		static public object[] Vectors = {
			// Adler32
			new object[] { new Adler32(), Battery.Empty, h("00000001") },
			new object[] { new Adler32(), Battery.A, h("00620062") },
			new object[] { new Adler32(), Battery.ABC, h("024D0127") },
			new object[] { new Adler32(), Battery.Alphabet, h("90860B20") },
			new object[] { new Adler32(), Battery.Alphanumeric, h("8ADB150C") },
			new object[] { new Adler32(), Battery.Numeric, h("0B2C020E") },
			new object[] { new Adler32(), Battery.NumericRepeated, h("97B61069") },
			new object[] { new Adler32(), Battery.Message, h("29750586") },
			new object[] { new Adler32(), Battery.QuickFox, h("5BDC0FDA") },
			new object[] { new Adler32(), Battery.MillionAs, h("15D870F9") },

			// http://en.wikipedia.org/wiki/Adler-32
			new object[] { new Adler32(), s("Wikipedia"), h("11E60398") },


			// Cksum
			new object[] { new Cksum(), Battery.Empty, h("FFFFFFFF") },
			new object[] { new Cksum(), Battery.A, h("48C279FE") },
			new object[] { new Cksum(), Battery.ABC, h("48AA78A2") },
			new object[] { new Cksum(), Battery.Alphabet, h("A1B937A8") },
			new object[] { new Cksum(), Battery.Alphanumeric, h("04E1F937") },
			new object[] { new Cksum(), Battery.Numeric, h("46CB95B3") },
			new object[] { new Cksum(), Battery.NumericRepeated, h("73A0B3A8") },
			new object[] { new Cksum(), Battery.Message, h("D934B396") },
			new object[] { new Cksum(), Battery.QuickFox, h("7BAB9CE8") },
			new object[] { new Cksum(), Battery.MillionAs, h("CAC55E1F") },

			// http://tcllib.sourceforge.net/doc/cksum.html
			new object[] { new Cksum(), s("Hello, World!"), h("9B8A5027") },


			// CRC
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.Empty, h("00") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.A, h("20") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.ABC, h("5F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.Alphabet, h("BD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.Alphanumeric, h("26") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.Numeric, h("52") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.NumericRepeated, h("74") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.Message, h("07") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.QuickFox, h("C1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), Battery.MillionAs, h("C0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.Empty, h("FD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.A, h("77") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.ABC, h("66") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.Alphabet, h("8F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.Alphanumeric, h("50") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.Numeric, h("B5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.NumericRepeated, h("31") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.Message, h("CD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.QuickFox, h("F6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), Battery.MillionAs, h("A8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.Empty, h("55") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.A, h("75") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.ABC, h("0A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.Alphabet, h("E8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.Alphanumeric, h("73") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.Numeric, h("07") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.NumericRepeated, h("21") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.Message, h("52") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.QuickFox, h("94") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), Battery.MillionAs, h("95") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.Empty, h("00") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.A, h("3B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.ABC, h("42") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.Alphabet, h("18") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.Alphanumeric, h("61") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.Numeric, h("4F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.NumericRepeated, h("21") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.Message, h("64") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.QuickFox, h("16") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), Battery.MillionAs, h("A5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.Empty, h("00") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.A, h("E6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.ABC, h("2B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.Alphabet, h("D4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.Alphanumeric, h("26") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.Numeric, h("6E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.NumericRepeated, h("81") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.Message, h("CD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.QuickFox, h("7F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), Battery.MillionAs, h("3C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.A, h("E8C1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.ABC, h("9738") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.Alphabet, h("9C1D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.Alphanumeric, h("57B4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.Numeric, h("C57A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.NumericRepeated, h("5EC7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.Message, h("3B44") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.QuickFox, h("FCDF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), Battery.MillionAs, h("ED59") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.A, h("728F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.ABC, h("58E9") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.Alphabet, h("80B0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.Alphanumeric, h("D7D5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.Numeric, h("286B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.NumericRepeated, h("4375") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.Message, h("7BD5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.QuickFox, h("C459") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), Battery.MillionAs, h("9577") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.A, h("728F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.ABC, h("58E9") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.Alphabet, h("80B0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.Alphanumeric, h("D7D5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.Numeric, h("286B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.NumericRepeated, h("4375") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.Message, h("7BD5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.QuickFox, h("C459") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_KERMIT)), Battery.MillionAs, h("9577") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.Empty, h("FFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.A, h("173E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.ABC, h("68C7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.Alphabet, h("63E2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.Alphanumeric, h("A84B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.Numeric, h("3A85") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.NumericRepeated, h("A138") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.Message, h("C4BB") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.QuickFox, h("0320") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), Battery.MillionAs, h("12A6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.A, h("5781") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.ABC, h("A8B6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.Alphabet, h("8580") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.Alphanumeric, h("034A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.Numeric, h("3DF5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.NumericRepeated, h("4D66") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.Message, h("C510") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.QuickFox, h("5763") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), Battery.MillionAs, h("E282") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.A, h("E8C1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.ABC, h("9738") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.Alphabet, h("9C1D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.Alphanumeric, h("57B4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.Numeric, h("C57A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.NumericRepeated, h("5EC7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.Message, h("3B44") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.QuickFox, h("FCDF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ARC)), Battery.MillionAs, h("ED59") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.A, h("E8C1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.ABC, h("9738") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.Alphabet, h("9C1D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.Alphanumeric, h("57B4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.Numeric, h("C57A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.NumericRepeated, h("5EC7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.Message, h("3B44") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.QuickFox, h("FCDF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_IBM)), Battery.MillionAs, h("ED59") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.A, h("E8C1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.ABC, h("9738") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.Alphabet, h("9C1D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.Alphanumeric, h("57B4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.Numeric, h("C57A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.NumericRepeated, h("5EC7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.Message, h("3B44") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.QuickFox, h("FCDF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_LHA)), Battery.MillionAs, h("ED59") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.Empty, h("FFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.A, h("9D77") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.ABC, h("514A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.Alphabet, h("53E2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.Alphanumeric, h("B46B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.Numeric, h("3218") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.NumericRepeated, h("DADF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.Message, h("32CC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.QuickFox, h("8FDD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), Battery.MillionAs, h("5924") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.A, h("82F7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.ABC, h("9E25") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.Alphabet, h("0D43") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.Alphanumeric, h("F3B9") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.Numeric, h("4B13") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.NumericRepeated, h("1B36") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.Message, h("D2BF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.QuickFox, h("9358") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), Battery.MillionAs, h("B71B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.A, h("13C6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.ABC, h("065F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.Alphabet, h("19AD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.Alphanumeric, h("0265") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.Numeric, h("002C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.NumericRepeated, h("0B4A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.Message, h("0C98") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.QuickFox, h("0D1D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), Battery.MillionAs, h("1FDC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.A, h("7C87") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.ABC, h("9DD6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.Alphabet, h("63AC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.Alphanumeric, h("7DB0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.Numeric, h("D321") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.NumericRepeated, h("E73A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.Message, h("9BA6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.QuickFox, h("F0C8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), Battery.MillionAs, h("909F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.Empty, h("0000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.A, h("7C87") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.ABC, h("9DD6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.Alphabet, h("63AC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.Alphanumeric, h("7DB0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.Numeric, h("D321") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.NumericRepeated, h("E73A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.Message, h("9BA6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.QuickFox, h("F0C8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_ZMODEM)), Battery.MillionAs, h("909F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.Empty, h("B704CE") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.A, h("F25713") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.ABC, h("BA1C7B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.Alphabet, h("ED3665") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.Alphanumeric, h("4662CD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.Numeric, h("8C0072") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.NumericRepeated, h("8313BB") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.Message, h("DBF0B6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.QuickFox, h("A2618C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), Battery.MillionAs, h("A5CB6B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.Empty, h("B704CE") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.A, h("F25713") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.ABC, h("BA1C7B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.Alphabet, h("ED3665") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.Alphanumeric, h("4662CD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.Numeric, h("8C0072") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.NumericRepeated, h("8313BB") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.Message, h("DBF0B6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.QuickFox, h("A2618C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24_OPENPGP)), Battery.MillionAs, h("A5CB6B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.Empty, h("00000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.A, h("E8B7BE43") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.ABC, h("352441C2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.Alphabet, h("4C2750BD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.Alphanumeric, h("1FC2E6D2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.Numeric, h("261DAEE5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.NumericRepeated, h("7CA94A72") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.Message, h("20159D7F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.QuickFox, h("414FA339") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), Battery.MillionAs, h("DC25BFBC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.Empty, h("00000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.A, h("19939B6B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.ABC, h("648CBB73") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.Alphabet, h("77BF9396") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.Alphanumeric, h("A0742188") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.Numeric, h("506853B6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.NumericRepeated, h("16087996") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.Message, h("BFC90357") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.QuickFox, h("459DEE61") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), Battery.MillionAs, h("97BEDC38") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.Empty, h("00000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.A, h("E8B7BE43") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.ABC, h("352441C2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.Alphabet, h("4C2750BD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.Alphanumeric, h("1FC2E6D2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.Numeric, h("261DAEE5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.NumericRepeated, h("7CA94A72") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.Message, h("20159D7F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.QuickFox, h("414FA339") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_PKZIP)), Battery.MillionAs, h("DC25BFBC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.Empty, h("00000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.A, h("C1D04330") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.ABC, h("364B3FB7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.Alphabet, h("9EE6EF25") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.Alphanumeric, h("A245D57D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.Numeric, h("F3DBD4FE") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.NumericRepeated, h("477A6781") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.Message, h("02BD79D0") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.QuickFox, h("22620404") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), Battery.MillionAs, h("436FE240") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.Empty, h("00000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.A, h("E8B7BE43") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.ABC, h("352441C2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.Alphabet, h("4C2750BD") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.Alphanumeric, h("1FC2E6D2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.Numeric, h("261DAEE5") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.NumericRepeated, h("7CA94A72") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.Message, h("20159D7F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.QuickFox, h("414FA339") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ITU)), Battery.MillionAs, h("DC25BFBC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.Empty, h("FFFFFFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.A, h("174841BC") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.ABC, h("CADBBE3D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.Alphabet, h("B3D8AF42") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.Alphanumeric, h("E03D192D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.Numeric, h("D9E2511A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.NumericRepeated, h("8356B58D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.Message, h("DFEA6280") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.QuickFox, h("BEB05CC6") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), Battery.MillionAs, h("23DA4043") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.Empty, h("FFFFFFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.A, h("E66C6494") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.ABC, h("9B73448C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.Alphabet, h("88406C69") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.Alphanumeric, h("5F8BDE77") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.Numeric, h("AF97AC49") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.NumericRepeated, h("E9F78669") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.Message, h("4036FCA8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.QuickFox, h("BA62119E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), Battery.MillionAs, h("684123C7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.Empty, h("FFFFFFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.A, h("579B24DF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.ABC, h("D3E8C673") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.Alphabet, h("C43D5B9C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.Alphanumeric, h("D96EF8CF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.Numeric, h("C181FD8E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.NumericRepeated, h("8EEF4218") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.Message, h("A3A82123") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.QuickFox, h("36B78081") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), Battery.MillionAs, h("1192BD8F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.Empty, h("FFFFFFFF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.A, h("579B24DF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.ABC, h("D3E8C673") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.Alphabet, h("C43D5B9C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.Alphanumeric, h("D96EF8CF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.Numeric, h("C181FD8E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.NumericRepeated, h("8EEF4218") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.Message, h("A3A82123") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.QuickFox, h("36B78081") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_CKSUM)), Battery.MillionAs, h("1192BD8F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.Empty, h("0000000000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.A, h("548F120162451C62") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.ABC, h("66501A349A0E0855") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.Alphabet, h("97A2566B552FCC4E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.Alphanumeric, h("5CA18585B92C58B9") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.Numeric, h("27B28F2E2139D6A1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.NumericRepeated, h("BE4C46263774953C") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.Message, h("C04D61278997BA5E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.QuickFox, h("41E05242FFA9883B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), Battery.MillionAs, h("3377CEC7A585E11F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.Empty, h("0000000000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.A, h("CE73F427ACC0A99A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.ABC, h("048B813AF9F49702") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.Alphabet, h("59F079F9218BAAA1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.Alphanumeric, h("A36DA8F71E78B6FB") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.Numeric, h("4F7CBCEA432C761E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.NumericRepeated, h("81E5EB73C8E7874A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.Message, h("5273F9EA7A357BF4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.QuickFox, h("BCD8BB366D256116") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), Battery.MillionAs, h("7FBA642ED2CE66D8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.Empty, h("0000000000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.A, h("5BB0000000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.ABC, h("58893BB000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.Alphabet, h("BD6421A048B5B60F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.Alphanumeric, h("DB908B6D7DDA3610") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.Numeric, h("BC66A5A9388A5BEF") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.NumericRepeated, h("83A2A4D289FDF389") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.Message, h("79C0463F44AA6F5D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.QuickFox, h("B10EB1B03E5A1D71") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), Battery.MillionAs, h("3CC9FD58A5365D50") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.Empty, h("0000000000000000") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.A, h("5FB354025B277B14") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.ABC, h("4431BB39B27363A7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.Alphabet, h("DB7530E54F783185") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.Alphanumeric, h("C0727C316890BCE8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.Numeric, h("93BE8325535C0007") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.NumericRepeated, h("C704EDBAE303E0A4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.Message, h("644474133412D35F") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.QuickFox, h("BF7EE596C3AA372B") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), Battery.MillionAs, h("8D928728881BA360") },
			
			// http://homepages.tesco.net/~rainstorm/crc-catalogue.htm
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8)), s("123456789"), h("F4") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ICODE)), s("123456789"), h("7E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_ITU)), s("123456789"), h("A1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_MAXIM)), s("123456789"), h("A1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC8_WCDMA)), s("123456789"), h("25") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16)), s("123456789"), h("BB3D") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT)), s("123456789"), h("2189") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_CCITT_FALSE)), s("123456789"), h("29B1") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_MAXIM)), s("123456789"), h("44C2") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_USB)), s("123456789"), h("B4C8") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_X25)), s("123456789"), h("906E") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XMODEM)), s("123456789"), h("31C3") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC16_XKERMIT)), s("123456789"), h("0C73") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC24)), s("123456789"), h("21CF02") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), s("123456789"), h("CBF43926 ") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_BZIP2)), s("123456789"), h("FC891918") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_ISCSI)), s("123456789"), h("E3069283") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_JAM)), s("123456789"), h("340BC6D9") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_POSIX)), s("123456789"), h("765E7680") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32_MPEG2)), s("123456789"), h("0376E6E7") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64)), s("123456789"), h("6C40DF5F0B497347") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_WE)), s("123456789"), h("62EC59E3F1A4F00A") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_ISO)), s("123456789"), h("46A5A9388A5BEFFE") },
			new object[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC64_JONES)), s("123456789"), h("E9C6D914C4B8D9CA") },


			// ELFHash
			new object[] { new ELFHash(), Battery.Empty, h("00000000") },
			new object[] { new ELFHash(), Battery.A, h("00000061") },
			new object[] { new ELFHash(), Battery.ABC, h("00006783") },
			new object[] { new ELFHash(), Battery.Alphabet, h("08D1E00A") },
			new object[] { new ELFHash(), Battery.Alphanumeric, h("0C355569") },
			new object[] { new ELFHash(), Battery.Numeric, h("078AEEA0") },
			new object[] { new ELFHash(), Battery.NumericRepeated, h("092D6440") },
			new object[] { new ELFHash(), Battery.Message, h("0A06A6E4") },
			new object[] { new ELFHash(), Battery.QuickFox, h("04280C57") },
			new object[] { new ELFHash(), Battery.MillionAs, h("00067771") },


			// FCS16
			new object[] { new FCS16(), Battery.Empty, h("0000") },
			new object[] { new FCS16(), Battery.A, h("82F7") },
			new object[] { new FCS16(), Battery.ABC, h("9E25") },
			new object[] { new FCS16(), Battery.Alphabet, h("0D43") },
			new object[] { new FCS16(), Battery.Alphanumeric, h("F3B9") },
			new object[] { new FCS16(), Battery.Numeric, h("4B13") },
			new object[] { new FCS16(), Battery.NumericRepeated, h("1B36") },
			new object[] { new FCS16(), Battery.Message, h("D2BF") },
			new object[] { new FCS16(), Battery.QuickFox, h("9358") },
			new object[] { new FCS16(), Battery.MillionAs, h("B71B") },

			// FCS32
			new object[] { new FCS32(), Battery.Empty, h("00000000") },
			new object[] { new FCS32(), Battery.A, h("E8B7BE43") },
			new object[] { new FCS32(), Battery.ABC, h("352441C2") },
			new object[] { new FCS32(), Battery.Alphabet, h("4C2750BD") },
			new object[] { new FCS32(), Battery.Alphanumeric, h("1FC2E6D2") },
			new object[] { new FCS32(), Battery.Numeric, h("261DAEE5") },
			new object[] { new FCS32(), Battery.NumericRepeated, h("7CA94A72") },
			new object[] { new FCS32(), Battery.Message, h("20159D7F") },
			new object[] { new FCS32(), Battery.QuickFox, h("414FA339") },
			new object[] { new FCS32(), Battery.MillionAs, h("DC25BFBC") },


			// FNV
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.Empty, h("00000000") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.A, h("00000061") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.ABC, h("84F09160") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.Alphabet, h("C4BC37E9") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.Alphanumeric, h("A0545CDD") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.Numeric, h("4B87CC53") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.NumericRepeated, h("CE3B2AA0") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.Message, h("1FB2927F") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.QuickFox, h("89074759") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), Battery.MillionAs, h("65E6E140") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.Empty, h("811C9DC5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.A, h("050C5D7E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.ABC, h("439C2F4B") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.Alphabet, h("819DAFD8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.Alphanumeric, h("06ED2FF8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.Numeric, h("E2523A92") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.NumericRepeated, h("16121D25") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.Message, h("62F6DE5E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.QuickFox, h("E9C86C6E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), Battery.MillionAs, h("A6DDE905") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.Empty, h("811C9DC5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.A, h("E40C292C") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.ABC, h("1A47E90B") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.Alphabet, h("B0BC0C82") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.Alphanumeric, h("9B2BCE4E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.Numeric, h("6108E844") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.NumericRepeated, h("5B52CD65") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.Message, h("B2C0F234") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.QuickFox, h("048FFF90") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), Battery.MillionAs, h("8569D985") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.Empty, h("0000000000000000") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.A, h("0000000000000061") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.ABC, h("014984000117D8A0") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.Alphabet, h("705F06A9369F4D49") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.Alphanumeric, h("DA9CC0DDCDDF039D") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.Numeric, h("517E2C2DC34C51B3") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.NumericRepeated, h("E4B572DB9CA993A0") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.Message, h("1DCCD45BDF5323FF") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.QuickFox, h("1F7224B4C8A7BBB9") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), Battery.MillionAs, h("DF79A2210065FF40") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.Empty, h("CBF29CE484222325") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.A, h("AF63BD4C8601B7BE") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.ABC, h("D8DCCA186BAFADCB") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.Alphabet, h("5367AC9A0A6338D8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.Alphanumeric, h("93466E18B44CC858") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.Numeric, h("0FA0660CB841CD92") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.NumericRepeated, h("23E9297C001C2F05") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.Message, h("028945F18DEDB23E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.QuickFox, h("A8B2F3117DE37ACE") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), Battery.MillionAs, h("C2EE56404AECCC65") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.Empty, h("CBF29CE484222325") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.A, h("AF63DC4C8601EC8C") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.ABC, h("E71FA2190541574B") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.Alphabet, h("8450DEB1CDC382A2") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.Alphanumeric, h("C35365F271D8C80E") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.Numeric, h("63510217CACFB1A4") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.NumericRepeated, h("95EE3578614F3045") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.Message, h("2DCBCCE86FCE9934") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.QuickFox, h("F3F9B7F5E7E47110") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), Battery.MillionAs, h("24C638D05C2865E5") },

			// http://isthe.com/chongo/src/fnv/test_fnv.c
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("foobar"), h("b74bb5ef") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("chongo was here!"), h("007c6c4c") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("curds and whey"), h("a0f0c4f5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("127.0.0.1"), h("567f75d7") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("feedfacedeadbeef"), h("528fb7ef") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("chongo <Landon Curt Noll> /\\../\\"), h("811c9dc5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("85AA94B0") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_32)), new byte[500], h("00000000") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("foobar"), h("31f0b262") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("chongo was here!"), h("b10d5725") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("curds and whey"), h("8cea820c") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("127.0.0.1"), h("0a3cffd8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("feedfacedeadbeef"), h("3a19c02a") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("chongo <Landon Curt Noll> /\\../\\"), h("995fa9c4") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("FABECE15") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_32)), new byte[500], h("fa823dd5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("foobar"), h("bf9cf968") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("chongo was here!"), h("448524fd") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("curds and whey"), h("22d5344e") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("127.0.0.1"), h("08a3d11e") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("feedfacedeadbeef"), h("f1760448") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("chongo <Landon Curt Noll> /\\../\\"), h("9a4e92e6") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("2bb3be35") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_32)), new byte[500], h("fa823dd5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("foobar"), h("0b91ae3f7ccdc5ef") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("chongo was here!"), h("4a7c4c49fb224d0c") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("curds and whey"), h("026fe915433713d5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("127.0.0.1"), h("f548616b8621d657") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("feedfacedeadbeef"), h("4456a56f9e05cfef") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("chongo <Landon Curt Noll> /\\../\\"), h("cbf29ce484222325") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("8b350e86d9470870") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV0_64)), new byte[500], h("0000000000000000") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("foobar"), h("340d8765a4dda9c2") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("chongo was here!"), h("4c9ca59581b27f45") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("curds and whey"), h("0690712cd6cf940c") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("127.0.0.1"), h("34ad3b1041204318") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("feedfacedeadbeef"), h("8c54f0203249438a") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("chongo <Landon Curt Noll> /\\../\\"), h("8fd0680da3088a04") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("ef1b2a2c86831d35") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1_64)), new byte[500], h("1fe3fce62bd816b5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("foobar"), h("85944171f73967e8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("chongo was here!"), h("858e2fa32a55e61d") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("curds and whey"), h("23e520e2751bb46e") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("127.0.0.1"), h("aabafe7104d914be") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("feedfacedeadbeef"), h("cac54572bb1a6fc8") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("chongo <Landon Curt Noll> /\\../\\"), h("2c8f4c9af81bcf06") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), s("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"), h("b6ef0e6950f52ed5") },
			new object[] { new FNV(FNVParameters.GetParameters(FNVStandard.FNV1A_64)), new byte[500], h("1fe3fce62bd816b5") },


			// GHash
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.Empty, h("00000000") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.A, h("00000061") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.ABC, h("00002286") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.Alphabet, h("86A3ED07") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.Alphanumeric, h("40F20EEB") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.Numeric, h("FC327935") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.NumericRepeated, h("74F04868") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.Message, h("EEA27FD5") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.QuickFox, h("8989E961") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_3)), Battery.MillionAs, h("6A6F0140") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.Empty, h("00000000") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.A, h("00000061") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.ABC, h("0001A9A6") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.Alphabet, h("99CBECBF") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.Alphanumeric, h("2CA6478B") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.Numeric, h("B9D74CAD") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.NumericRepeated, h("79BD7C68") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.Message, h("9D0CD5C5") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.QuickFox, h("25241CF9") },
			new object[] { new GHash(GHashParameters.GetParameters(GHashStandard.GHash_5)), Battery.MillionAs, h("8DB27640") },


			// GOSTHash
			new object[] { new GOSTHash(), Battery.Empty, h("CE85B99CC46752FFFEE35CAB9A7B0278ABB4C2D2055CFF685AF4912C49490F8D") },
			new object[] { new GOSTHash(), Battery.A, h("D42C539E367C66E9C88A801F6649349C21871B4344C6A573F849FDCE62F314DD") },
			new object[] { new GOSTHash(), Battery.ABC, h("F3134348C44FB1B2A277729E2285EBB5CB5E0F29C975BC753B70497C06A4D51D") },
			new object[] { new GOSTHash(), Battery.Alphabet, h("3B7917937540A4F33FFCB5F37F29E8A9921B0655D7FD568D7CF27291CB897BB4") },
			new object[] { new GOSTHash(), Battery.Alphanumeric, h("95C1AF627C356496D80274330B2CFF6A10C67B5F597087202F94D06D2338CF8E") },
			new object[] { new GOSTHash(), Battery.Numeric, h("BB4575570CF7EA517A11F90BF0E9B329E039ED2AA2113E1CF8C0CAFEC5C074C2") },
			new object[] { new GOSTHash(), Battery.NumericRepeated, h("CC178DCAD4DF619DCAA00AAC79CA355C00144E4ADA2793D7BD9B3518EAD3CCD3") },
			new object[] { new GOSTHash(), Battery.Message, h("AD4434ECB18F2C99B60CBE59EC3D2469582B65273F48DE72DB2FDE16A4889A4D") },
			new object[] { new GOSTHash(), Battery.QuickFox, h("77B7FA410C9AC58A25F49BCA7D0468C9296529315EACA76BD1A10F376D1F4294") },
			new object[] { new GOSTHash(), Battery.MillionAs, h("5C00CCC2734CDD3332D3D4749576E3C1A7DBAF0E7EA74E9FA602413C90A129FA") },

			// http://en.wikipedia.org/wiki/GOST_(hash_function)
			new object[] { new GOSTHash(), s("The quick brown fox jumps over the lazy cog"), h("A3EBC4DAAAB78B0BE131DAB5737A7F67E602670D543521319150D2E14EEEC445") },

			// http://tools.ietf.org/html/draft-dolmatov-cryptocom-gost341194-01
			new object[] { new GOSTHash(), s("This is message, length=32 bytes"), h("B1C466D37519B82E8319819FF32595E047A28CB6F83EFF1C6916A815A637FFFA") },
			new object[] { new GOSTHash(), s("Suppose the original message has length = 50 bytes"), h("471ABA57A60A770D3A76130635C1FBEA4EF14DE51F78B4AE57DD893B62F55208") },


			// HAVAL
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.Empty, h("C68F39913F901F3DDF44C707357A7D70") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.A, h("0CD40739683E15F01CA5DBCEEF4059F1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.ABC, h("9E40ED883FB63E985D299B40CDA2B8F2") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.Alphabet, h("DC502247FB3EB8376109EDA32D361D82") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.Alphanumeric, h("DE5EB3F7D9EB08FAE7A07D68E3047EC6") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.Numeric, h("FFF2F4CA8E3BE96F598D2E7CD9977C31") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.NumericRepeated, h("D15C566B5C1B84928236CA065565208F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.Message, h("3CAF4A79E81ADCD6D1716BCC1CEF4573") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.QuickFox, h("713502673D67E5FA557629A71D331945") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_128)), Battery.MillionAs, h("8BEAA7DD5BB591C8009E429D79041813") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.Empty, h("EE6BBF4D6A46A679B3A856C88538BB98") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.A, h("5CD07F03330C3B5020B29BA75911E17D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.ABC, h("6F2132867C9648419ADCD5013E532FA2") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.Alphabet, h("B2A73B99775FFB17CD8781B85EC66221") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.Alphanumeric, h("CAD57C0563BDA208D66BB89EB922E2A2") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.Numeric, h("752DE5DB6D32F6AF00C0ABA18DAD9769") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.NumericRepeated, h("EDF66FA258F61206595B7C261CF2F812") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.Message, h("FAEE633871B30771ECDA708D66FE6551") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.QuickFox, h("6EECE560A2E8D6B919E81FE91B0E7156") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_128)), Battery.MillionAs, h("E3CB98F97B866042D3F72D354DB85B79") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.Empty, h("184B8482A0C050DCA54B59C7F05BF5DD") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.A, h("F23FBE704BE8494BFA7A7FB4F8AB09E5") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.ABC, h("D054232FE874D9C6C6DC8E6A853519EA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.Alphabet, h("0EFFF71D7D14344CBA1F4B25F924A693") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.Alphanumeric, h("4B27D04DDB516BDCDFEB96EB8C7C8E90") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.Numeric, h("07C402ECB36DC9DC2A7B22A536643A8D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.NumericRepeated, h("2395F65E5EEB485293FC561A0B349F1E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.Message, h("C28052DC143C1C70450D3C0504756EFE") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.QuickFox, h("696F02111F2E1DA5C21D50EB782B7E8F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_128)), Battery.MillionAs, h("6EB2B04D75F666E9E7467901030B7BDD") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.Empty, h("D353C3AE22A25401D257643836D7231A9A95F953") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.A, h("4DA08F514A7275DBC4CECE4A347385983983A830") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.ABC, h("B21E876C4D391E2A897661149D83576B5530A089") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.Alphabet, h("EBA9FA6050F24C07C29D1834A60900EA4E32E61B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.Alphanumeric, h("97DC988D97CAAE757BE7523C4E8D4EA63007A4B9") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.Numeric, h("81FD0D0AB5C3F3ACD0C94F856A64F6B605A614AF") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.NumericRepeated, h("34038B573EF4A91EBFE54FC67B8B24EA11654EAC") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.Message, h("43A47F6F1C016207F08BE8115C0977BF155346DA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.QuickFox, h("B338AC397E8BCCADCCCD96549CADD4882D834107") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_160)), Battery.MillionAs, h("5EA7FA9A0236AAD66A1DA8F161985C6E3DAE2B81") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.Empty, h("1D33AAE1BE4146DBAACA0B6E70D7A11F10801525") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.A, h("E0A5BE29627332034D4DD8A910A1A0E6FE04084D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.ABC, h("77ACA22F5B12CC09010AFC9C0797308638B1CB9B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.Alphabet, h("1C7884AF86D11AC120FE5DF75CEE792D2DFA48EF") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.Alphanumeric, h("148334AAD24B658BDC946C521CDD2B1256608C7B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.Numeric, h("E6F561980A2B6A177A991FC7A312AE99CBAB694A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.NumericRepeated, h("238770CB2812AED0BD43335D5C8E5785E819A1F1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.Message, h("429346BB57211AF6651060FD02DB264FBE9C4365") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.QuickFox, h("6E739D01F5739CEED94DA1A115B52D5951280560") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_160)), Battery.MillionAs, h("38296B604F7DB0116BE446CA93096C46CD501B96") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.Empty, h("255158CFC1EED1A7BE7C55DDD64D9790415B933B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.A, h("F5147DF7ABC5E3C81B031268927C2B5761B5A2B5") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.ABC, h("AE646B04845E3351F00C5161D138940E1FA0C11C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.Alphabet, h("917836A9D27EED42D406F6002E7D11A0F87C404C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.Alphanumeric, h("6DDBDE98EA1C4F8C7F360FB9163C7C952680AA70") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.Numeric, h("FA4B69A9AC6D6505232C262BE88BAD59FD966431") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.NumericRepeated, h("A807C7A8A1AFA6D8DD64CB395917F5792748243C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.Message, h("2AC00EF52871B373EDA407D7EAFBD225987F33F1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.QuickFox, h("ECCE9FA8A428866304FF082AF2F9062637D36B23") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_160)), Battery.MillionAs, h("D24980CF975AD6026D365CB6C4CE769FB1DD8B36") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.Empty, h("E9C48D7903EAF2A91C5B350151EFCB175C0FC82DE2289A4E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.A, h("B359C8835647F5697472431C142731FF6E2CDDCACC4F6E08") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.ABC, h("A7B14C9EF3092319B0E75E3B20B957D180BF20745629E8DE") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.Alphabet, h("A25E1456E6863E7D7C74017BB3E098E086AD4BE0580D7056") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.Alphanumeric, h("DEF6653091E3005B43A61681014A066CD189009D00856EE7") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.Numeric, h("E7CDD03345B11CC27C8C1063D7560B97FA4ADDAAEEE89198") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.NumericRepeated, h("0706697DD426D8549504C64FB1DE2ECA5492513B18DA7193") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.Message, h("6C4D9EC368EFC96EEEA58E132BDB2391C2B3E9D20190F7EA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.QuickFox, h("58E6CED002E311172483D434BA738AD033E7FA950E431503") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_192)), Battery.MillionAs, h("9F74867A7AA8261BB69CFDB179853F43ED383E2206D4BB89") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.Empty, h("4A8372945AFA55C7DEAD800311272523CA19D42EA47B72DA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.A, h("856C19F86214EA9A8A2F0C4B758B973CCE72A2D8FF55505C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.ABC, h("7E29881ED05C915903DD5E24A8E81CDE5D910142AE66207C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.Alphabet, h("2E2E581D725E799FDA1948C75E85A28CFE1CF0C6324A1ADA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.Alphanumeric, h("E5C9F81AE0B31FC8780FC37CB63BB4EC96496F79A9B58344") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.Numeric, h("21214DF83EDB8A91EC42A01CF0DD9CB55FCEEA5313980A95") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.NumericRepeated, h("C7C44BCC0F83946D6CBA0EE6344AC0B7D80C38ABCE5D470F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.Message, h("E91960A06AFBC8BD9F400A16135ED66E2745EF01D6D1CDF7") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.QuickFox, h("228EE09BC7E36151C6F285F558E6AEDE66AD38C8341592B9") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_192)), Battery.MillionAs, h("AA15056802A32823332DD551EBE3E39918D6BC9E1FA293B1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.Empty, h("4839D0626F95935E17EE2FC4509387BBE2CC46CB382FFE85") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.A, h("5FFA3B3548A6E2CFC06B7908CEB5263595DF67CF9C4B9341") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.ABC, h("D12091104555B00119A8D07808A3380BF9E60018915B9025") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.Alphabet, h("85F1F1C0ECA04330CF2DE5C8C83CF85A611B696F793284DE") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.Alphanumeric, h("D651C8AC45C9050810D9FD64FC919909900C4664BE0336D0") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.Numeric, h("87D9FFBED54F4AC0B4FD6B940C91C72FB6C973F4172B789E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.NumericRepeated, h("0A60FCE978D5777E5410C0B71B9053108265E3038F395B9F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.Message, h("8225EFABADED623849843546CDF3C8C88E0FDCA68F9A5A56") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.QuickFox, h("023D045F75D4BF051FD6E50F7B7417BF9949C4B5D2B4B7EF") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_192)), Battery.MillionAs, h("F7E67BA089F640B68C8DF62560F63A61BE5358614463616D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.Empty, h("C5AAE9D47BFFCAAF84A8C6E7CCACD60A0DD1932BE7B1A192B9214B6D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.A, h("731814BA5605C59B673E4CAAE4AD28EEB515B3ABC2B198336794E17B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.ABC, h("5BC955220BA2346A948D2848ECA37BDD5ECA6ECCA7B594BD32923FAB") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.Alphabet, h("06AE38EBC43DB58BD6B1D477C7B4E01B85A1E7B19B0BD088E33B58D1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.Alphanumeric, h("939F7ED7801C1CE4B32BC74A4056EEE6081C999ED246907ADBA880A7") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.Numeric, h("490D7F1356299E0A83160B809F2CFD5EF92A25680F0DDA5175E6284E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.NumericRepeated, h("0FE989B4633B10D7DEFFB1171D3134F9BEAD7A9DC5309F03FE2241CD") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.Message, h("EDF3E4ADD009EE89EE8AB03C39A3C749D20A48319C50C3A83861C540") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.QuickFox, h("E1D5792306F56B22419662B06D1885A66DCA3EBA01F53274C89AEAEB") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_224)), Battery.MillionAs, h("A7863EB11D407176324C44527C53EBCFD5517D27CBD7C334550094A8") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.Empty, h("3E56243275B3B81561750550E36FCD676AD2F5DD9E15F2E89E6ED78E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.A, h("742F1DBEEAF17F74960558B44F08AA98BDC7D967E6C0AB8F799B3AC1") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.ABC, h("124C43D2BA4884599D013E8C872BFEA4C88B0B6BF6303974CBE04E68") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.Alphabet, h("A0AC696CDB2030FA67F6CC1D14613B1962A7B69B4378A9A1B9738796") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.Alphanumeric, h("3E63C95727E0CD85D42034191314401E42AB9063A94772647E3E8E0F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.Numeric, h("53720B0172CEDFFC9769AC66E59F7EE9EAE71D07B1F142D1BD633F21") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.NumericRepeated, h("3A37AE6D1069343BB62E1AB5222C19C3D48DA344D01583963210384A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.Message, h("86E52ECC72CCAEC188C17033FAFE8B652705FD6A7D9DB2E0D10CAB92") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.QuickFox, h("DDDD6689885F6DB4AD91E35A35E1F4498446510DF798D4FD54B8654F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_224)), Battery.MillionAs, h("0D53E2E5E768707AB94070F6F9B8ACCD9AD831076780443A2E659FDC") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.Empty, h("4A0513C032754F5582A758D35917AC9ADF3854219B39E3AC77D1837E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.A, h("67B3CB8D4068E3641FA4F156E03B52978B421947328BFB9168C7655D") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.ABC, h("8081027A500147C512E5F1055986674D746D92AF4841ABEB89DA64AD") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.Alphabet, h("1B360ACFF7806502B5D40C71D237CC0C40343D2000AE2F65CF487C94") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.Alphanumeric, h("180AED7F988266016719F60148BA2C9B4F5EC3B9758960FC735DF274") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.Numeric, h("257B349F96B66B2F1FD16A699A47B894EB59BBEE3CD60DD0A015CF1F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.NumericRepeated, h("55591D16852C9EF56BDAC519790DFED8B0AF1E719D531E20D65148DA") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.Message, h("877A7B891FCE89036FC127756B07923ECE3BA7C495922909CC89512E") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.QuickFox, h("03D953298C8E56B46385C6761CD4B2E377889A75C97EAEA475421C73") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_224)), Battery.MillionAs, h("D2DC79DB0E5A60BAEF29644DC8F12D6EA617434A6F49C24B55379020") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.Empty, h("4F6938531F0BC8991F62DA7BBD6F7DE3FAD44562B8C6F4EBF146D5B4E46F7C17") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.A, h("47C838FBB4081D9525A0FF9B1E2C05A98F625714E72DB289010374E27DB021D8") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.ABC, h("8699F1E3384D05B2A84B032693E2B6F46DF85A13A50D93808D6874BB8FB9E86C") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.Alphabet, h("72FAD4BDE1DA8C8332FB60561A780E7F504F21547B98686824FC33FC796AFA76") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.Alphanumeric, h("899397D96489281E9E76D5E65ABAB751F312E06C06C07C9C1D42ABD31BB6A404") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.Numeric, h("93CC8F6BFD063A2D919EAD90886E11306AC35189B5CF3845FDDC0A7B77408F92") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.NumericRepeated, h("29911201FC26E68DDFEDD0FD5172C0AF1F05B0A7AE2F027A04CBCEB3BE69F632") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.Message, h("911D1AAD699E1B4A3A0E783BD5E68BA45392CC4915B1A17ECA8A49DA70879912") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.QuickFox, h("9446028F42B3768A41BD873CA69B0C006341D986613567F39EB61F96CA683300") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_3_256)), Battery.MillionAs, h("4DEEABD6891D95E5B740BE70531CE1CB70866D12602C0656644AFB0003B69062") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.Empty, h("C92B2E23091E80E375DADCE26982482D197B1A2521BE82DA819F8CA2C579B99B") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.A, h("E686D2394A49B44D306ECE295CF9021553221DB132B36CC0FF5B593D39295899") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.ABC, h("8F409F1BB6B30C5016FDCE55F652642261575BEDCA0B9533F32F5455459142B5") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.Alphabet, h("124F6EB645DC407637F8F719CC31250089C89903BF1DB8FAC21EA4614DF4E99A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.Alphanumeric, h("46A3A1DFE867EDE652425CCD7FE8006537EAD26372251686BEA286DA152DC35A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.Numeric, h("D85E6726633C158EF067C25E4FF735B98A837EA2C984873001190DF764816F8A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.NumericRepeated, h("2187A29F8D4539010A3B91407304F74A0FC30325D91FD3C6BB585CBC45546543") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.Message, h("DBCC8E1011DF45121D4FF2BB62C6C38949D76084F829C36D5929AEE71B261F2F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.QuickFox, h("C0D4C6EA514105FD1A9C38A238553FB7FA21D4127EB1A3035A75CE9D06A83D96") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_4_256)), Battery.MillionAs, h("907033880F4564527C303BDA8DD55966BB1094C181FC12470ACF8F45DA066CB8") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.Empty, h("BE417BB4DD5CFB76C7126F4F8EEB1553A449039307B1A3CD451DBFDC0FBBE330") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.A, h("DE8FD5EE72A5E4265AF0A756F4E1A1F65C9B2B2F47CF17ECF0D1B88679A3E22F") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.ABC, h("976CD6254C337969E5913B158392A2921AF16FCA51F5601D486E0A9DE01156E7") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.Alphabet, h("C9C7D8AFA159FD9E965CB83FF5EE6F58AEDA352C0EFF005548153A61551C38EE") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.Alphanumeric, h("B45CB6E62F2B1320E4F8F1B0B273D45ADD47C321FD23999DCF403AC37636D963") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.Numeric, h("95295B53DBD2D3EA6921DCBF38C62D65A87C0C661467C8F080BD8B1A08B4D94A") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.NumericRepeated, h("68E57A72AD513AF517469A96A0073CE212B42E772671687DE3DFCE4FF8CDE9BF") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.Message, h("7CCF22AF7F99ACD6AC84F176041329E2958FDE1419A259D5A4B89D8F4115AD74") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.QuickFox, h("B89C551CDFE2E06DBD4CEA2BE1BC7D557416C58EBB4D07CBC94E49F710C55BE4") },
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), Battery.MillionAs, h("3F2BE6DD53DC7944290E8939192BCCCC8077C99B622E0C20355942DD6A4EC009") },

			// http://en.wikipedia.org/wiki/HAVAL
			new object[] { new HAVAL(HAVALParameters.GetParameters(HAVALStandard.HAVAL_5_256)), s("The quick brown fox jumps over the lazy cog"), h("60983BB8C8F49AD3BEA29899B78CD741F4C96E911BBC272E5550A4F195A4077E") },


			// JHash
			new object[] { new JenkinsHash(), Battery.Empty, h("BD49D10D") },
			new object[] { new JenkinsHash(), Battery.A, h("29EEC818") },
			new object[] { new JenkinsHash(), Battery.ABC, h("251E4793") },
			new object[] { new JenkinsHash(), Battery.Alphabet, h("C52FCEE8") },
			new object[] { new JenkinsHash(), Battery.Alphanumeric, h("3FC61E96") },
			new object[] { new JenkinsHash(), Battery.Numeric, h("B73AF45C") },
			new object[] { new JenkinsHash(), Battery.NumericRepeated, h("E1C850F8") },
			new object[] { new JenkinsHash(), Battery.Message, h("4687CE02") },
			new object[] { new JenkinsHash(), Battery.QuickFox, h("FC1558DE") },
			new object[] { new JenkinsHash(), Battery.MillionAs, h("8E375E5B") },


			// MD2
			new object[] { new MD2(), Battery.Empty, h("8350E5A3E24C153DF2275C9F80692773") },
			new object[] { new MD2(), Battery.A, h("32EC01EC4A6DAC72C0AB96FB34C0B5D1") },
			new object[] { new MD2(), Battery.ABC, h("DA853B0D3F88D99B30283A69E6DED6BB") },
			new object[] { new MD2(), Battery.Alphabet, h("4E8DDFF3650292AB5A4108C3AA47940B") },
			new object[] { new MD2(), Battery.Alphanumeric, h("DA33DEF2A42DF13975352846C30338CD") },
			new object[] { new MD2(), Battery.Numeric, h("38E53522A2E67FC5EA57BAE1575A3107") },
			new object[] { new MD2(), Battery.NumericRepeated, h("D5976F79D83D3A0DC9806C3C66F3EFD8") },
			new object[] { new MD2(), Battery.Message, h("AB4F496BFB2A530B219FF33031FE06B0") },
			new object[] { new MD2(), Battery.QuickFox, h("03D85A0D629D2C442E987525319FC471") },
			new object[] { new MD2(), Battery.MillionAs, h("8C0A09FF1216ECAF95C8130953C62EFD") },

			// http://en.wikipedia.org/wiki/MD2_(cryptography)
			new object[] { new MD2(), s("The quick brown fox jumps over the lazy cog"), h("6B890C9292668CDBBFDA00A4EBF31F05") },


			// MD4
			new object[] { new MD4(), Battery.Empty, h("31D6CFE0D16AE931B73C59D7E0C089C0") },
			new object[] { new MD4(), Battery.A, h("BDE52CB31DE33E46245E05FBDBD6FB24") },
			new object[] { new MD4(), Battery.ABC, h("A448017AAF21D8525FC10AE87AA6729D") },
			new object[] { new MD4(), Battery.Alphabet, h("D79E1C308AA5BBCDEEA8ED63DF412DA9") },
			new object[] { new MD4(), Battery.Alphanumeric, h("043F8582F241DB351CE627E153E7F0E4") },
			new object[] { new MD4(), Battery.Numeric, h("85B196C3E39457D91CAB9C905F9A11C0") },
			new object[] { new MD4(), Battery.NumericRepeated, h("E33B4DDC9C38F2199C3E7B164FCC0536") },
			new object[] { new MD4(), Battery.Message, h("D9130A8164549FE818874806E1C7014B") },
			new object[] { new MD4(), Battery.QuickFox, h("1BEE69A46BA811185C194762ABAEAE90") },
			new object[] { new MD4(), Battery.MillionAs, h("BBCE80CC6BB65E5C6745E30D4EECA9A4") },

			// http://en.wikipedia.org/wiki/Md4
			new object[] { new MD4(), s("The quick brown fox jumps over the lazy cog"), h("B86E130CE7028DA59E672D56AD0113DF") },


			// MD5
			new object[] { new MD5(), Battery.Empty, h("D41D8CD98F00B204E9800998ECF8427E") },
			new object[] { new MD5(), Battery.A, h("0CC175B9C0F1B6A831C399E269772661") },
			new object[] { new MD5(), Battery.ABC, h("900150983CD24FB0D6963F7D28E17F72") },
			new object[] { new MD5(), Battery.Alphabet, h("C3FCD3D76192E4007DFB496CCA67E13B") },
			new object[] { new MD5(), Battery.Alphanumeric, h("D174AB98D277D9F5A5611C2C9F419D9F") },
			new object[] { new MD5(), Battery.Numeric, h("E807F1FCF82D132F9BB018CA6738A19F") },
			new object[] { new MD5(), Battery.NumericRepeated, h("57EDF4A22BE3C955AC49DA2E2107B67A") },
			new object[] { new MD5(), Battery.Message, h("F96B697D7CB7938D525A2F31AAF161D0") },
			new object[] { new MD5(), Battery.QuickFox, h("9E107D9D372BB6826BD81D3542A419D6") },
			new object[] { new MD5(), Battery.MillionAs, h("7707D6AE4E027C70EEA2A935C2296F21") },

			// http://en.wikipedia.org/wiki/Md5
			new object[] { new MD5(), s("The quick brown fox jumps over the lazy dog."), h("E4D909C290D0FB1CA068FFADDF22CBD0") },


			// Panama
			new object[] { new Panama(), Battery.Empty, h("AA0CC954D757D7AC7779CA3342334CA471ABD47D5952AC91ED837ECD5B16922B") },
			new object[] { new Panama(), Battery.A, h("6604CA6420AEB684418846D02A9005A57477C8DECD46BDBDFAF0C8E23BE268FD") },
			new object[] { new Panama(), Battery.ABC, h("A2A70386B81FB918BE17F00FF3E3B376A0462C4DC2EEC7F2C63202C8874C037D") },
			new object[] { new Panama(), Battery.Alphabet, h("CBF13B835674785F6A5741276BE2384397187FF12A8A6652A1A1549B14507130") },
			new object[] { new Panama(), Battery.Alphanumeric, h("4AEFF66CD896D63E03AC2F98A36E8A73F7DE5FABA470E7901D84E3D555F59DA6") },
			new object[] { new Panama(), Battery.Numeric, h("8F1B8F0AFEB2ADCE81F099733B2850E2B772D203097A3620E1FABAEED8D30500") },
			new object[] { new Panama(), Battery.NumericRepeated, h("1325A194745DE0560ECB0BCC2F0DE0F4F626157873E3FE1987A8080FBA0220BF") },
			new object[] { new Panama(), Battery.Message, h("6D0AD9E9844386ADD2101AABDB85DFE253E518A10AA7507B863735B999FAE5E8") },
			new object[] { new Panama(), Battery.QuickFox, h("5F5CA355B90AC622B0AA7E654EF5F27E9E75111415B48B8AFE3ADD1C6B89CBA1") },
			new object[] { new Panama(), Battery.MillionAs, h("AF9C66FB6058E2232A5DFBA063EE14B0F86F0E334E165812559435464DD9BB60") },

			// http://www.users.zetnet.co.uk/hopwood/crypto/scan/md.html
			new object[] { new Panama(), s("T"), h("049D698307D8541F22870DFA0A551099D3D02BC6D57C610A06A4585ED8D35FF8") },
			

			// RIPEMD128
			new object[] { new RIPEMD128(), Battery.Empty, h("CDF26213A150DC3ECB610F18F6B38B46") },
			new object[] { new RIPEMD128(), Battery.A, h("86BE7AFA339D0FC7CFC785E72F578D33") },
			new object[] { new RIPEMD128(), Battery.ABC, h("C14A12199C66E4BA84636B0F69144C77") },
			new object[] { new RIPEMD128(), Battery.Alphabet, h("FD2AA607F71DC8F510714922B371834E") },
			new object[] { new RIPEMD128(), Battery.Alphanumeric, h("D1E959EB179C911FAEA4624C60C5C702") },
			new object[] { new RIPEMD128(), Battery.Numeric, h("6F1921E5D5B0579C737805BD839DC97D") },
			new object[] { new RIPEMD128(), Battery.NumericRepeated, h("3F45EF194732C2DBB2C4A2C769795FA3") },
			new object[] { new RIPEMD128(), Battery.Message, h("9E327B3D6E523062AFC1132D7DF9D1B8") },
			new object[] { new RIPEMD128(), Battery.QuickFox, h("3FA9B57F053C053FBE2735B2380DB596") },
			new object[] { new RIPEMD128(), Battery.MillionAs, h("4A7F5723F954EBA1216C9D8F6320431F") },

			// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
			new object[] { new RIPEMD128(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("A1AA0689D0FAFA2DDC22E88B49133A06") },


			// RIPEMD160
			new object[] { new RIPEMD160(), Battery.Empty, h("9C1185A5C5E9FC54612808977EE8F548B2258D31") },
			new object[] { new RIPEMD160(), Battery.A, h("0BDC9D2D256B3EE9DAAE347BE6F4DC835A467FFE") },
			new object[] { new RIPEMD160(), Battery.ABC, h("8EB208F7E05D987A9B044A8E98C6B087F15A0BFC") },
			new object[] { new RIPEMD160(), Battery.Alphabet, h("F71C27109C692C1B56BBDCEB5B9D2865B3708DBC") },
			new object[] { new RIPEMD160(), Battery.Alphanumeric, h("B0E20B6E3116640286ED3A87A5713079B21F5189") },
			new object[] { new RIPEMD160(), Battery.Numeric, h("9D752DAA3FB4DF29837088E1E5A1ACF74932E074") },
			new object[] { new RIPEMD160(), Battery.NumericRepeated, h("9B752E45573D4B39F4DBD3323CAB82BF63326BFB") },
			new object[] { new RIPEMD160(), Battery.Message, h("5D0689EF49D2FAE572B881B123A85FFA21595F36") },
			new object[] { new RIPEMD160(), Battery.QuickFox, h("37F332F68DB77BD9D7EDD4969571AD671CF9DD3B") },
			new object[] { new RIPEMD160(), Battery.MillionAs, h("52783243C1697BDBE16D37F97F68F08325DC1528") },

			// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
			new object[] { new RIPEMD160(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("12A053384A9C0C88E405A06C27DCF49ADA62EB2B") },

			// http://en.wikipedia.org/wiki/RIPEMD
			new object[] { new RIPEMD160(), s("The quick brown fox jumps over the lazy cog"), h("132072DF690933835EB8B6AD0B77E7B6F14ACAD7") },


			// RIPEMD256
			new object[] { new RIPEMD256(), Battery.Empty, h("02BA4C4E5F8ECD1877FC52D64D30E37A2D9774FB1E5D026380AE0168E3C5522D") },
			new object[] { new RIPEMD256(), Battery.A, h("F9333E45D857F5D90A91BAB70A1EBA0CFB1BE4B0783C9ACFCD883A9134692925") },
			new object[] { new RIPEMD256(), Battery.ABC, h("AFBD6E228B9D8CBBCEF5CA2D03E6DBA10AC0BC7DCBE4680E1E42D2E975459B65") },
			new object[] { new RIPEMD256(), Battery.Alphabet, h("649D3034751EA216776BF9A18ACC81BC7896118A5197968782DD1FD97D8D5133") },
			new object[] { new RIPEMD256(), Battery.Alphanumeric, h("5740A408AC16B720B84424AE931CBB1FE363D1D0BF4017F1A89F7EA6DE77A0B8") },
			new object[] { new RIPEMD256(), Battery.Numeric, h("9836CAD714A598B572302BB09BD430E94E1F0C294F1B0A94EFC32606A964FCF1") },
			new object[] { new RIPEMD256(), Battery.NumericRepeated, h("06FDCC7A409548AAF91368C06A6275B553E3F099BF0EA4EDFD6778DF89A890DD") },
			new object[] { new RIPEMD256(), Battery.Message, h("87E971759A1CE47A514D5C914C392C9018C7C46BC14465554AFCDF54A5070C0E") },
			new object[] { new RIPEMD256(), Battery.QuickFox, h("C3B0C2F764AC6D576A6C430FB61A6F2255B4FA833E094B1BA8C1E29B6353036F") },
			new object[] { new RIPEMD256(), Battery.MillionAs, h("AC953744E10E31514C150D4D8D7B677342E33399788296E43AE4850CE4F97978") },

			// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
			new object[] { new RIPEMD256(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("3843045583AAC6C8C8D9128573E7A9809AFB2A0F34CCC36EA9E72F16F6368E3F") },


			// RIPEMD320
			new object[] { new RIPEMD320(), Battery.Empty, h("22D65D5661536CDC75C1FDF5C6DE7B41B9F27325EBC61E8557177D705A0EC880151C3A32A00899B8") },
			new object[] { new RIPEMD320(), Battery.A, h("CE78850638F92658A5A585097579926DDA667A5716562CFCF6FBE77F63542F99B04705D6970DFF5D") },
			new object[] { new RIPEMD320(), Battery.ABC, h("DE4C01B3054F8930A79D09AE738E92301E5A17085BEFFDC1B8D116713E74F82FA942D64CDBC4682D") },
			new object[] { new RIPEMD320(), Battery.Alphabet, h("CABDB1810B92470A2093AA6BCE05952C28348CF43FF60841975166BB40ED234004B8824463E6B009") },
			new object[] { new RIPEMD320(), Battery.Alphanumeric, h("ED544940C86D67F250D232C30B7B3E5770E0C60C8CB9A4CAFE3B11388AF9920E1B99230B843C86A4") },
			new object[] { new RIPEMD320(), Battery.Numeric, h("AD1BCC613104DFF743F5B587DF9184829AF49D259C7783A96A5843F98C6205510BB98754789539F3") },
			new object[] { new RIPEMD320(), Battery.NumericRepeated, h("557888AF5F6D8ED62AB66945C6D2A0A47ECD5341E915EB8FEA1D0524955F825DC717E4A008AB2D42") },
			new object[] { new RIPEMD320(), Battery.Message, h("3A8E28502ED45D422F68844F9DD316E7B98533FA3F2A91D29F84D425C88D6B4EFF727DF66A7C0197") },
			new object[] { new RIPEMD320(), Battery.QuickFox, h("E7660E67549435C62141E51C9AB1DCC3B1EE9F65C0B3E561AE8F58C5DBA3D21997781CD1CC6FBC34") },
			new object[] { new RIPEMD320(), Battery.MillionAs, h("BDEE37F4371E20646B8B0D862DDA16292AE36F40965E8C8509E63D1DBDDECC503E2B63EB9245BB66") },

			// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
			new object[] { new RIPEMD320(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("D034A7950CF722021BA4B84DF769A5DE2060E259DF4C9BB4A4268C0E935BBC7470A969C9D072A1AC") },


			// SHA0
			new object[] { new SHA0(), Battery.Empty, h("F96CEA198AD1DD5617AC084A3D92C6107708C0EF") },
			new object[] { new SHA0(), Battery.A, h("37F297772FAE4CB1BA39B6CF9CF0381180BD62F2") },
			new object[] { new SHA0(), Battery.ABC, h("0164B8A914CD2A5E74C4F7FF082C4D97F1EDF880") },
			new object[] { new SHA0(), Battery.Alphabet, h("B40CE07A430CFD3C033039B9FE9AFEC95DC1BDCD") },
			new object[] { new SHA0(), Battery.Alphanumeric, h("79E966F7A3A990DF33E40E3D7F8F18D2CAEBADFA") },
			new object[] { new SHA0(), Battery.Numeric, h("786ABC00FC4C0AB7EA5F0F2BD85FB9AB00C2AD82") },
			new object[] { new SHA0(), Battery.NumericRepeated, h("4AA29D14D171522ECE47BEE8957E35A41F3E9CFF") },
			new object[] { new SHA0(), Battery.Message, h("C1B0F222D150EBB9AA36A40CAFDC8BCBED830B14") },
			new object[] { new SHA0(), Battery.QuickFox, h("B03B401BA92D77666221E843FEEBF8C561CEA5F7") },
			new object[] { new SHA0(), Battery.MillionAs, h("3232AFFA48628A26653B5AAA44541FD90D690603") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA0(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("D2516EE1ACFA5BAF33DFC1C471E438449EF134C8") },


			// SHA1
			new object[] { new SHA1(), Battery.Empty, h("DA39A3EE5E6B4B0D3255BFEF95601890AFD80709") },
			new object[] { new SHA1(), Battery.A, h("86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8") },
			new object[] { new SHA1(), Battery.ABC, h("A9993E364706816ABA3E25717850C26C9CD0D89D") },
			new object[] { new SHA1(), Battery.Alphabet, h("32D10C7B8CF96570CA04CE37F2A19D84240D3A89") },
			new object[] { new SHA1(), Battery.Alphanumeric, h("761C457BF73B14D27E9E9265C46F4B4DDA11F940") },
			new object[] { new SHA1(), Battery.Numeric, h("01B307ACBA4F54F55AAFC33BB06BBBF6CA803E9A") },
			new object[] { new SHA1(), Battery.NumericRepeated, h("50ABF5706A150990A08B2C5EA40FA0E585554732") },
			new object[] { new SHA1(), Battery.Message, h("C12252CEDA8BE8994D5FA0290A47231C1D16AAE3") },
			new object[] { new SHA1(), Battery.QuickFox, h("2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12") },
			new object[] { new SHA1(), Battery.MillionAs, h("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA1(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("84983E441C3BD26EBAAE4AA1F95129E5E54670F1") },

			// http://en.wikipedia.org/wiki/Sha1
			new object[] { new SHA1(), s("The quick brown fox jumps over the lazy cog"), h("DE9F2C7FD25E1B3AFAD3E85A0BD17D9B100DB4B3") },


			// SHA224
			new object[] { new SHA224(), Battery.Empty, h("D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F") },
			new object[] { new SHA224(), Battery.A, h("ABD37534C7D9A2EFB9465DE931CD7055FFDB8879563AE98078D6D6D5") },
			new object[] { new SHA224(), Battery.ABC, h("23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7") },
			new object[] { new SHA224(), Battery.Alphabet, h("45A5F72C39C5CFF2522EB3429799E49E5F44B356EF926BCF390DCCC2") },
			new object[] { new SHA224(), Battery.Alphanumeric, h("BFF72B4FCB7D75E5632900AC5F90D219E05E97A7BDE72E740DB393D9") },
			new object[] { new SHA224(), Battery.Numeric, h("B564E8A5CF20A254EB34E1AE98C3D957C351CE854491CCBEAEB220EA") },
			new object[] { new SHA224(), Battery.NumericRepeated, h("B50AECBE4E9BB0B57BC5F3AE760A8E01DB24F203FB3CDCD13148046E") },
			new object[] { new SHA224(), Battery.Message, h("2CB21C83AE2F004DE7E81C3C7019CBCB65B71AB656B22D6D0C39B8EB") },
			new object[] { new SHA224(), Battery.QuickFox, h("730E109BD7A8A32B1CB9D9A09AA2325D2430587DDBC0C38BAD911525") },
			new object[] { new SHA224(), Battery.MillionAs, h("20794655980C91D8BBB4C1EA97618A4BF03F42581948B2EE4EE7AD67") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA224(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("75388B16512776CC5DBA5DA1FD890150B0C6455CB4F58B1952522525") },

			// http://en.wikipedia.org/wiki/Examples_of_SHA_digests
			new object[] { new SHA224(), s("The quick brown fox jumps over the lazy cog"), h("FEE755F44A55F20FB3362CDC3C493615B3CB574ED95CE610EE5B1E9B") },
			new object[] { new SHA224(), Battery.Empty, h("D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F") },


			// SHA256
			new object[] { new SHA256(), Battery.Empty, h("E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855") },
			new object[] { new SHA256(), Battery.A, h("CA978112CA1BBDCAFAC231B39A23DC4DA786EFF8147C4E72B9807785AFEE48BB") },
			new object[] { new SHA256(), Battery.ABC, h("BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD") },
			new object[] { new SHA256(), Battery.Alphabet, h("71C480DF93D6AE2F1EFAD1447C66C9525E316218CF51FC8D9ED832F2DAF18B73") },
			new object[] { new SHA256(), Battery.Alphanumeric, h("DB4BFCBD4DA0CD85A60C3C37D3FBD8805C77F15FC6B1FDFE614EE0A7C8FDB4C0") },
			new object[] { new SHA256(), Battery.Numeric, h("C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646") },
			new object[] { new SHA256(), Battery.NumericRepeated, h("F371BC4A311F2B009EEF952DD83CA80E2B60026C8E935592D0F9C308453C813E") },
			new object[] { new SHA256(), Battery.Message, h("F7846F55CF23E14EEBEAB5B4E1550CAD5B509E3348FBC4EFA3A1413D393CB650") },
			new object[] { new SHA256(), Battery.QuickFox, h("D7A8FBB307D7809469CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592") },
			new object[] { new SHA256(), Battery.MillionAs, h("CDC76E5C9914FB9281A1C7E284D73E67F1809A48A497200E046D39CCC7112CD0") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA256(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1") },

			// http://en.wikipedia.org/wiki/Examples_of_SHA_digests
			new object[] { new SHA256(), s("The quick brown fox jumps over the lazy cog"), h("E4C4D8F3BF76B692DE791A173E05321150F7A345B46484FE427F6ACC7ECC81BE") },


			// SHA384
			new object[] { new SHA384(), Battery.Empty, h("38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B") },
			new object[] { new SHA384(), Battery.A, h("54A59B9F22B0B80880D8427E548B7C23ABD873486E1F035DCE9CD697E85175033CAA88E6D57BC35EFAE0B5AFD3145F31") },
			new object[] { new SHA384(), Battery.ABC, h("CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7") },
			new object[] { new SHA384(), Battery.Alphabet, h("FEB67349DF3DB6F5924815D6C3DC133F091809213731FE5C7B5F4999E463479FF2877F5F2936FA63BB43784B12F3EBB4") },
			new object[] { new SHA384(), Battery.Alphanumeric, h("1761336E3F7CBFE51DEB137F026F89E01A448E3B1FAFA64039C1464EE8732F11A5341A6F41E0C202294736ED64DB1A84") },
			new object[] { new SHA384(), Battery.Numeric, h("ED845F8B4F2A6D5DA86A3BEC90352D916D6A66E3420D720E16439ADF238F129182C8C64FC4EC8C1E6506BC2B4888BAF9") },
			new object[] { new SHA384(), Battery.NumericRepeated, h("B12932B0627D1C060942F5447764155655BD4DA0C9AFA6DD9B9EF53129AF1B8FB0195996D2DE9CA0DF9D821FFEE67026") },
			new object[] { new SHA384(), Battery.Message, h("473ED35167EC1F5D8E550368A3DB39BE54639F828868E9454C239FC8B52E3C61DBD0D8B4DE1390C256DCBB5D5FD99CD5") },
			new object[] { new SHA384(), Battery.QuickFox, h("CA737F1014A48F4C0B6DD43CB177B0AFD9E5169367544C494011E3317DBF9A509CB1E5DC1E85A941BBEE3D7F2AFBC9B1") },
			new object[] { new SHA384(), Battery.MillionAs, h("9D0E1809716474CB086E834E310A4A1CED149E9C00F248527972CEC5704C2A5B07B8B3DC38ECC4EBAE97DDD87F3D8985") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA384(), s("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"), h("09330C33F71147E83D192FC782CD1B4753111B173B3B05D22FA08086E3B0F712FCC7C71A557E2DB966C3E9FA91746039") },

			// http://en.wikipedia.org/wiki/Examples_of_SHA_digests
			new object[] { new SHA384(), s("The quick brown fox jumps over the lazy cog"), h("098CEA620B0978CAA5F0BEFBA6DDCF22764BEA977E1C70B3483EDFDF1DE25F4B40D6CEA3CADF00F809D422FEB1F0161B") },


			// SHA512
			new object[] { new SHA512(), Battery.Empty, h("CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E") },
			new object[] { new SHA512(), Battery.A, h("1F40FC92DA241694750979EE6CF582F2D5D7D28E18335DE05ABC54D0560E0F5302860C652BF08D560252AA5E74210546F369FBBBCE8C12CFC7957B2652FE9A75") },
			new object[] { new SHA512(), Battery.ABC, h("DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F") },
			new object[] { new SHA512(), Battery.Alphabet, h("4DBFF86CC2CA1BAE1E16468A05CB9881C97F1753BCE3619034898FAA1AABE429955A1BF8EC483D7421FE3C1646613A59ED5441FB0F321389F77F48A879C7B1F1") },
			new object[] { new SHA512(), Battery.Alphanumeric, h("1E07BE23C26A86EA37EA810C8EC7809352515A970E9253C26F536CFC7A9996C45C8370583E0A78FA4A90041D71A4CEAB7423F19C71B9D5A3E01249F0BEBD5894") },
			new object[] { new SHA512(), Battery.Numeric, h("12B03226A6D8BE9C6E8CD5E55DC6C7920CAAA39DF14AAB92D5E3EA9340D1C8A4D3D0B8E4314F1F6EF131BA4BF1CEB9186AB87C801AF0D5C95B1BEFB8CEDAE2B9") },
			new object[] { new SHA512(), Battery.NumericRepeated, h("72EC1EF1124A45B047E8B7C75A932195135BB61DE24EC0D1914042246E0AEC3A2354E093D76F3048B456764346900CB130D2A4FD5DD16ABB5E30BCB850DEE843") },
			new object[] { new SHA512(), Battery.Message, h("107DBF389D9E9F71A3A95F6C055B9251BC5268C2BE16D6C13492EA45B0199F3309E16455AB1E96118E8A905D5597B72038DDB372A89826046DE66687BB420E7C") },
			new object[] { new SHA512(), Battery.QuickFox, h("07E547D9586F6A73F73FBAC0435ED76951218FB7D0C8D788A309D785436BBB642E93A252A954F23912547D1E8A3B5ED6E1BFD7097821233FA0538F3DB854FEE6") },
			new object[] { new SHA512(), Battery.MillionAs, h("E718483D0CE769644E2E42C7BC15B4638E1F98B13B2044285632A803AFA973EBDE0FF244877EA60A4CB0432CE577C31BEB009C5C2C49AA2E4EADB217AD8CC09B") },

			// http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf
			new object[] { new SHA512(), s("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"), h("8E959B75DAE313DA8CF4F72814FC143F8F7779C6EB9F7FA17299AEADB6889018501D289E4900F7E4331B99DEC4B5433AC7D329EEB6DD26545E96E55B874BE909") },

			// http://en.wikipedia.org/wiki/Examples_of_SHA_digests
			new object[] { new SHA512(), s("The quick brown fox jumps over the lazy cog"), h("3EEEE1D0E11733EF152A6C29503B3AE20C4F1F3CDA4CB26F1BC1A41F91C7FE4AB3BD86494049E201C4BD5155F31ECB7A3C8606843C4CC8DFCAB7DA11C8AE5045") },


			// Snefru2
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.Empty, h("C22A5255C0310CA2FB86286C70FB4434") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.A, h("5E805ED80354E9691A1B2EFDE15E912F") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.ABC, h("B6029A546373F33217BE9515800C5E15") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.Alphabet, h("E493246749D851ED3D9732A4DBEB922A") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.Alphanumeric, h("5D36752FD9DD25F20F0315AD24B80882") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.Numeric, h("A71EA00815A1E63BBF27524B82831A17") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.NumericRepeated, h("2DE70CDFEF784BC811FD3A92B69CEC50") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.Message, h("429C78E780F150F6251B16CB9E4D72D4") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.QuickFox, h("163386104C5DA8D13C61A34B9974DF70") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_128)), Battery.MillionAs, h("21681999E05688F21C4053AA517A8EF5") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.Empty, h("F1B1BCE4285633DBBDCDB34710A469008F958063235CC893D0E281451DB67131") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.A, h("96240E570BB4677118588156980C1122131C6592ACA33A141293348669C9999D") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.ABC, h("BDA1E7EF98134710FDC3A1BFA714993EF35B22D81B1608D09FCA2BE479DF338C") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.Alphabet, h("58C2BBF6D8FE0560D512C99B75BADB01A3A6E7E61E28FEBCCBB4A836C5F6ED56") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.Alphanumeric, h("6E9F0717947C5F2D8F90F72AC9E86114DB53DB6F1BC57AB6F6335821F79C4A26") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.Numeric, h("D15C271BD736F3673EAE957C0B7BE7F14DBE5EFC66885856CE03AF188917A093") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.NumericRepeated, h("33FCD1F9D8ECC6E8A7F08EC8DD87950AF415454CEDFB30278EE1476DAC87F022") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.Message, h("9FB95337D1F7799F02F8E2B405C17DC2D50F73CFBE54527249F0B2C6FA1F2E9E") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.QuickFox, h("74766038B85967A177A6271336C4E94DFAC93BAFAFCC48A6CBF6C0414B0FAD11") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_4_256)), Battery.MillionAs, h("547F596759436A78FAE15038BFAEAF07B57E94DA109A1BC937EED930447BB734") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.Empty, h("AA2532A1422095F6E8DBFF85FD6EF2BC") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.A, h("BF5CE540AE51BC50399F96746C5A15BD") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.ABC, h("553D0648928299A0F22A275A02C83B10") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.Alphabet, h("7840148A66B91C219C36F127A0929606") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.Alphanumeric, h("0EFD7F93A549F023B79781090458923E") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.Numeric, h("451053647F1C0B2EFC77B28652718FAA") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.NumericRepeated, h("D9204ED80BB8430C0B9C244FE485814A") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.Message, h("96D6F2F4112C4BAF29F653F1594E2D5D") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.QuickFox, h("59D9539D0DD96D635B5BDBD1395BB86C") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_128)), Battery.MillionAs, h("5071F647BC51CFD48F9A8F2D2ED84829") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.Empty, h("A4DF4C0A4AF3DAD3B7E9F4200144F74D6F44F875AB32715F5664119D676F8D19") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.A, h("45161589AC317BE0CEBA70DB2573DDDA6E668A31984B39BF65E4B664B584C63D") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.ABC, h("7D033205647A2AF3DC8339F6CB25643C33EBC622D32979C4B612B02C4903031B") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.Alphabet, h("9304BB2F876D9C4F54546CF7EC59E0A006BEAD745F08C642F25A7C808E0BF86E") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.Alphanumeric, h("83AA9193B62FFD269FAA43D31E6AC2678B340E2A85849470328BE9773A9E5728") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.Numeric, h("9C54ACEFFF1D8103E1C689FE954521C77E005B14C3540B9430D3F1852160D03F") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.NumericRepeated, h("D5FCE38A152A2D9B83AB44C29306EE45AB0AED0E38C957EC431DAB6ED6BB71B8") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.Message, h("C5D4CE38DAA043BDD59ED15DB577500C071B917C1A46CD7B4D30B44A44C86DF8") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.QuickFox, h("674CAA75F9D8FD2089856B95E93A4FB42FA6C8702F8980E11D97A142D76CB358") },
			new object[] { new Snefru2(Snefru2Parameters.GetParameters(Snefru2Standard.Snefru2_8_256)), Battery.MillionAs, h("78A46B5726A27F5E53BC5A3E4AD5DD4681DF09EC1B78FF74ECFD0B456E0CA2A6") },


			// SumBSD
			new object[] { new SumBSD(), Battery.Empty, h("0000") },
			new object[] { new SumBSD(), Battery.A, h("0061") },
			new object[] { new SumBSD(), Battery.ABC, h("40AC") },
			new object[] { new SumBSD(), Battery.Alphabet, h("D131") },
			new object[] { new SumBSD(), Battery.Alphanumeric, h("63F3") },
			new object[] { new SumBSD(), Battery.Numeric, h("E8E7") },
			new object[] { new SumBSD(), Battery.NumericRepeated, h("5555") },
			new object[] { new SumBSD(), Battery.Message, h("6737") },
			new object[] { new SumBSD(), Battery.QuickFox, h("C56E") },
			new object[] { new SumBSD(), Battery.MillionAs, h("F531") },


			// SumSysV
			new object[] { new SumSysV(), Battery.Empty, h("0000") },
			new object[] { new SumSysV(), Battery.A, h("0061") },
			new object[] { new SumSysV(), Battery.ABC, h("0126") },
			new object[] { new SumSysV(), Battery.Alphabet, h("0B1F") },
			new object[] { new SumSysV(), Battery.Alphanumeric, h("150B") },
			new object[] { new SumSysV(), Battery.Numeric, h("020D") },
			new object[] { new SumSysV(), Battery.NumericRepeated, h("1068") },
			new object[] { new SumSysV(), Battery.Message, h("0585") },
			new object[] { new SumSysV(), Battery.QuickFox, h("0FD9") },
			new object[] { new SumSysV(), Battery.MillionAs, h("2008") },


			// Tiger
			new object[] { new Tiger(), Battery.Empty, h("3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3") },
			new object[] { new Tiger(), Battery.A, h("77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809") },
			new object[] { new Tiger(), Battery.ABC, h("2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93") },
			new object[] { new Tiger(), Battery.Alphabet, h("1714A472EEE57D30040412BFCC55032A0B11602FF37BEEE9") },
			new object[] { new Tiger(), Battery.Alphanumeric, h("8DCEA680A17583EE502BA38A3C368651890FFBCCDC49A8CC") },
			new object[] { new Tiger(), Battery.Numeric, h("875AAAB2A36537F895A5944B426754CD1C424277EAC4A29F") },
			new object[] { new Tiger(), Battery.NumericRepeated, h("1C14795529FD9F207A958F84C52F11E887FA0CABDFD91BFD") },
			new object[] { new Tiger(), Battery.Message, h("D981F8CB78201A950DCF3048751E441C517FCA1AA55A29F6") },
			new object[] { new Tiger(), Battery.QuickFox, h("6D12A41E72E644F017B6F0E2F7B44C6285F06DD5D2C5B075") },
			new object[] { new Tiger(), Battery.MillionAs, h("6DB0E2729CBEAD93D715C6A7D36302E9B3CEE0D2BC314B41") },

			// http://www.cs.technion.ac.il/~biham/Reports/Tiger/
			new object[] { new Tiger(), new byte[100], h("A5A54E12A9538A158E78AE09896DCB2CE31F14150625E615") },
			new object[] { new Tiger(), s("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), h("0F7BF9A19B9C58F2B7610DF7E84F0AC3A71C631E7B53F78E") },


			// Whirlpool
			new object[] { new Whirlpool(), Battery.Empty, h("19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A73E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3") },
			new object[] { new Whirlpool(), Battery.A, h("8ACA2602792AEC6F11A67206531FB7D7F0DFF59413145E6973C45001D0087B42D11BC645413AEFF63A42391A39145A591A92200D560195E53B478584FDAE231A") },
			new object[] { new Whirlpool(), Battery.ABC, h("4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5") },
			new object[] { new Whirlpool(), Battery.Alphabet, h("F1D754662636FFE92C82EBB9212A484A8D38631EAD4238F5442EE13B8054E41B08BF2A9251C30B6A0B8AAE86177AB4A6F68F673E7207865D5D9819A3DBA4EB3B") },
			new object[] { new Whirlpool(), Battery.Alphanumeric, h("DC37E008CF9EE69BF11F00ED9ABA26901DD7C28CDEC066CC6AF42E40F82F3A1E08EBA26629129D8FB7CB57211B9281A65517CC879D7B962142C65F5A7AF01467") },
			new object[] { new Whirlpool(), Battery.Numeric, h("899B76161701A4111B36CBADD0D168E896F1E97D22B4F470331293B9D9BCE5FD6A338B64BFD640B8D78EF3A465047886527E1C250D587CA7693F46D27AE8721A") },
			new object[] { new Whirlpool(), Battery.NumericRepeated, h("466EF18BABB0154D25B9D38A6414F5C08784372BCCB204D6549C4AFADB6014294D5BD8DF2A6C44E538CD047B2681A51A2C60481E88C5A20B2C2A80CF3A9A083B") },
			new object[] { new Whirlpool(), Battery.Message, h("378C84A4126E2DC6E56DCC7458377AAC838D00032230F53CE1F5700C0FFB4D3B8421557659EF55C106B4B52AC5A4AAA692ED920052838F3362E86DBD37A8903E") },
			new object[] { new Whirlpool(), Battery.QuickFox, h("B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725FD2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35") },
			new object[] { new Whirlpool(), Battery.MillionAs, h("0C99005BEB57EFF50A7CF005560DDF5D29057FD86B20BFD62DECA0F1CCEA4AF51FC15490EDDC47AF32BB2B66C34FF9AD8C6008AD677F77126953B226E4ED8B01") },

			// http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
			new object[] { new Whirlpool(), s("abcdbcdecdefdefgefghfghighijhijk"), h("2A987EA40F917061F5D6F0A0E4644F488A7A5A52DEEE656207C562F988E95C6916BDC8031BC5BE1B7B947639FE050B56939BAAA0ADFF9AE6745B7B181C3BE3FD") },


			// XUM32
			new object[] { new XUM32(), Battery.Empty, h("00000000") },
			new object[] { new XUM32(), Battery.A, h("E8B6BE22") },
			new object[] { new XUM32(), Battery.ABC, h("35274383") },
			new object[] { new XUM32(), Battery.Alphabet, h("4C3D51D8") },
			new object[] { new XUM32(), Battery.Alphanumeric, h("1FFCE661") },
			new object[] { new XUM32(), Battery.Numeric, h("2617AFBF") },
			new object[] { new XUM32(), Battery.NumericRepeated, h("7CF94A69") },
			new object[] { new XUM32(), Battery.Message, h("201B9D8D") },
			new object[] { new XUM32(), Battery.QuickFox, h("4164A21D") },
			new object[] { new XUM32(), Battery.MillionAs, h("9E65BFF7") },


			// Parallel
			new object[] { new ParallelHash(new HashAlgorithm[] { new Whirlpool() }), Battery.Alphabet, h("F1D754662636FFE92C82EBB9212A484A8D38631EAD4238F5442EE13B8054E41B08BF2A9251C30B6A0B8AAE86177AB4A6F68F673E7207865D5D9819A3DBA4EB3B") },
			new object[] { new ParallelHash(new HashAlgorithm[] { new CRC(CRCParameters.GetParameters(CRCStandard.CRC32)), new MD5(), new SHA1() }), Battery.Alphabet, h("4C2750BDC3FCD3D76192E4007DFB496CCA67E13B32D10C7B8CF96570CA04CE37F2A19D84240D3A89") },
			new object[] { new ParallelHash(new HashAlgorithm[] { new Adler32(), new Tiger(), new SHA512() }), Battery.Alphabet, h("90860B201714A472EEE57D30040412BFCC55032A0B11602FF37BEEE94DBFF86CC2CA1BAE1E16468A05CB9881C97F1753BCE3619034898FAA1AABE429955A1BF8EC483D7421FE3C1646613A59ED5441FB0F321389F77F48A879C7B1F1") },
		};
	}
}
